cmake_minimum_required(VERSION 3.10)
project(ConvNeuralNetwork)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Find Eigen3 library
find_package(Eigen3 REQUIRED)

# Add source files
add_library(ConvNeuralNetwork STATIC
    src/ConvLayer.cpp
    src/Filter.cpp
    src/PoolingLayer.cpp
    src/FullConnectedLayer.cpp
    src/ConvNeuralNetwork.cpp
    ../common/src/ActivationFunction.cpp
    ../common/src/LossFunction.cpp
    ../common/src/LayerManager.cpp
)

# Include directories
target_include_directories(ConvNeuralNetwork PRIVATE ${EIGEN3_INCLUDE_DIR}
                                                     ${PROJECT_SOURCE_DIR}/include
                                                     ${PROJECT_SOURCE_DIR}/../common/include
)

# Enable testing
enable_testing()
add_subdirectory(test)